package com.changyinBus.system.mapper;

import com.changyinBus.common.core.domain.entity.SysNavi;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 导航管理 数据层
 */
public interface SysNaviMapper {
    /**
     * 根据条件分页查询导航
     *
     * @param navi 导航信息
     * @return 导航集合信息
     */
    List<SysNavi> selectNaviList(SysNavi navi);

    /**
     * 根据导航ID查询信息
     *
     * @param naviId 导航分类ID
     * @return 导航信息
     */
    SysNavi selectNaviById(Long naviId);

    /**
     * 根据导航类型获取父级实体信息
     * @param navType
     * @return
     */
    SysNavi selectNavByTypeAndTenantId(@Param("navType")int navType,@Param("tenantId")long tenantId);

    /**
     * 根据ID查询所有子导航
     *
     * @param naviId 导航ID
     * @return 导航列表
     */
    List<SysNavi> selectChildrenNaviById(Long naviId);

    /**
     * 是否存在子节点
     *
     * @param naviId 导航ID
     * @return 结果
     */
    int hasChildByNaviId(Long naviId);

    /**
     * 新增导航信息
     *
     * @param navi 导航信息
     * @return 结果
     */
    int insertNavi(SysNavi navi);

    /**
     * 修改导航信息
     *
     * @param navi 导航信息
     * @return 结果
     */
    int updateNavi(SysNavi navi);

    /**
     * 修改子元素关系
     *
     * @param navis 子元素
     * @return 结果
     */
    int updateNaviChildren(@Param("navis") List<SysNavi> navis);

    /**
     * 删除导航信息
     *
     * @param naviId 导航ID
     * @return 结果
     */
    int deleteNaviById(Long naviId);
}
